Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
389 / 389
PptTheme
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
2 / 2
8
100.00% covered (success)
100.00%
389 / 389
 render
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
3 / 3
 writeTheme
100.00% covered (success)
100.00%
1 / 1
6
100.00% covered (success)
100.00%
386 / 386
1<?php
2/**
3 * This file is part of PHPPresentation - A pure PHP library for reading and writing
4 * presentations documents.
5 *
6 * PHPPresentation is free software distributed under the terms of the GNU Lesser
7 * General Public License version 3 as published by the Free Software Foundation.
8 *
9 * For the full copyright and license information, please read the LICENSE
10 * file that was distributed with this source code. For the full list of
11 * contributors, visit https://github.com/PHPOffice/PHPPresentation/contributors.
12 *
13 * @see        https://github.com/PHPOffice/PHPPresentation
14 *
15 * @copyright   2009-2015 PHPPresentation contributors
16 * @license     http://www.gnu.org/licenses/lgpl.txt LGPL version 3
17 */
18
19declare(strict_types=1);
20
21namespace PhpOffice\PhpPresentation\Writer\PowerPoint2007;
22
23use PhpOffice\Common\XMLWriter;
24use PhpOffice\PhpPresentation\Slide;
25
26class PptTheme extends AbstractDecoratorWriter
27{
28    /**
29     * @return \PhpOffice\Common\Adapter\Zip\ZipInterface
30     *
31     * @throws \Exception
32     */
33    public function render()
34    {
35        foreach ($this->oPresentation->getAllMasterSlides() as $oMasterSlide) {
36            $this->getZip()->addFromString('ppt/theme/theme' . $oMasterSlide->getRelsIndex() . '.xml', $this->writeTheme($oMasterSlide));
37        }
38
39        return $this->getZip();
40    }
41
42    /**
43     * Write theme to XML format.
44     *
45     * @return string XML Output
46     */
47    protected function writeTheme(Slide\SlideMaster $oMasterSlide)
48    {
49        $arrayFont = [
50            'Jpan' => 'MS Pゴシック',
51            'Hang' => '맑은 고딕',
52            'Hans' => '宋体',
53            'Hant' => '新細明體',
54            'Arab' => 'Times New Roman',
55            'Hebr' => 'Times New Roman',
56            'Thai' => 'Angsana New',
57            'Ethi' => 'Nyala',
58            'Beng' => 'Vrinda',
59            'Gujr' => 'Shruti',
60            'Khmr' => 'MoolBoran',
61            'Knda' => 'Tunga',
62            'Guru' => 'Raavi',
63            'Cans' => 'Euphemia',
64            'Cher' => 'Plantagenet Cherokee',
65            'Yiii' => 'Microsoft Yi Baiti',
66            'Tibt' => 'Microsoft Himalaya',
67            'Thaa' => 'MV Boli',
68            'Deva' => 'Mangal',
69            'Telu' => 'Gautami',
70            'Taml' => 'Latha',
71            'Syrc' => 'Estrangelo Edessa',
72            'Orya' => 'Kalinga',
73            'Mlym' => 'Kartika',
74            'Laoo' => 'DokChampa',
75            'Sinh' => 'Iskoola Pota',
76            'Mong' => 'Mongolian Baiti',
77            'Viet' => 'Times New Roman',
78            'Uigh' => 'Microsoft Uighur',
79        ];
80
81        // Create XML writer
82        $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
83
84        $name = 'Theme' . rand(1, 100);
85
86        // XML header
87        $objWriter->startDocument('1.0', 'UTF-8', 'yes');
88
89        // a:theme
90        $objWriter->startElement('a:theme');
91        $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main');
92        $objWriter->writeAttribute('name', $name);
93
94        // a:theme/a:themeElements
95        $objWriter->startElement('a:themeElements');
96
97        // a:theme/a:themeElements/a:clrScheme
98        $objWriter->startElement('a:clrScheme');
99        $objWriter->writeAttribute('name', $name);
100
101        foreach ($oMasterSlide->getAllSchemeColors() as $oSchemeColor) {
102            // a:theme/a:themeElements/a:clrScheme/a:*
103            $objWriter->startElement('a:' . $oSchemeColor->getValue());
104
105            if (in_array($oSchemeColor->getValue(), [
106                'dk1', 'lt1',
107            ])) {
108                $objWriter->startElement('a:sysClr');
109                $objWriter->writeAttribute('val', ('dk1' == $oSchemeColor->getValue() ? 'windowText' : 'window'));
110                $objWriter->writeAttribute('lastClr', $oSchemeColor->getRGB());
111                $objWriter->endElement();
112            } else {
113                $objWriter->startElement('a:srgbClr');
114                $objWriter->writeAttribute('val', $oSchemeColor->getRGB());
115                $objWriter->endElement();
116            }
117
118            // a:theme/a:themeElements/a:clrScheme/a:*/
119            $objWriter->endElement();
120        }
121
122        // a:theme/a:themeElements/a:clrScheme/
123        $objWriter->endElement();
124
125        // a:theme/a:themeElements/a:fontScheme
126        $objWriter->startElement('a:fontScheme');
127        $objWriter->writeAttribute('name', $name);
128
129        // a:theme/a:themeElements/a:fontScheme/a:majorFont
130        $objWriter->startElement('a:majorFont');
131
132        // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:latin
133        $objWriter->startElement('a:latin');
134        $objWriter->writeAttribute('typeface', 'Calibri');
135        $objWriter->endElement();
136
137        // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:ea
138        $objWriter->startElement('a:ea');
139        $objWriter->writeAttribute('typeface', '');
140        $objWriter->endElement();
141
142        // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:cs
143        $objWriter->startElement('a:cs');
144        $objWriter->writeAttribute('typeface', '');
145        $objWriter->endElement();
146
147        foreach ($arrayFont as $script => $typeface) {
148            // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:font
149            $objWriter->startElement('a:font');
150            $objWriter->writeAttribute('script', $script);
151            $objWriter->writeAttribute('typeface', $typeface);
152            $objWriter->endElement();
153        }
154
155        // a:theme/a:themeElements/a:fontScheme/a:majorFont/
156        $objWriter->endElement();
157
158        // a:theme/a:themeElements/a:fontScheme/a:minorFont
159        $objWriter->startElement('a:minorFont');
160
161        // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:latin
162        $objWriter->startElement('a:latin');
163        $objWriter->writeAttribute('typeface', 'Calibri');
164        $objWriter->endElement();
165
166        // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:ea
167        $objWriter->startElement('a:ea');
168        $objWriter->writeAttribute('typeface', '');
169        $objWriter->endElement();
170
171        // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:cs
172        $objWriter->startElement('a:cs');
173        $objWriter->writeAttribute('typeface', '');
174        $objWriter->endElement();
175
176        foreach ($arrayFont as $script => $typeface) {
177            // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:font
178            $objWriter->startElement('a:font');
179            $objWriter->writeAttribute('script', $script);
180            $objWriter->writeAttribute('typeface', $typeface);
181            $objWriter->endElement();
182        }
183
184        // a:theme/a:themeElements/a:fontScheme/a:minorFont/
185        $objWriter->endElement();
186
187        // a:theme/a:themeElements/a:fontScheme/
188        $objWriter->endElement();
189
190        // a:theme/a:themeElements/a:fmtScheme
191        $objWriter->startElement('a:fmtScheme');
192        $objWriter->writeAttribute('name', $name);
193
194        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst
195        $objWriter->startElement('a:fillStyleLst');
196
197        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:solidFill
198        $objWriter->startElement('a:solidFill');
199
200        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:solidFill/a:schemeClr
201        $objWriter->startElement('a:schemeClr');
202        $objWriter->writeAttribute('val', 'phClr');
203
204        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:solidFill/a:schemeClr/
205        $objWriter->endElement();
206
207        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:solidFill/
208        $objWriter->endElement();
209
210        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill
211        $objWriter->startElement('a:gradFill');
212        $objWriter->writeAttribute('rotWithShape', 1);
213
214        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst
215        $objWriter->startElement('a:gsLst');
216
217        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs
218        $objWriter->startElement('a:gs');
219        $objWriter->writeAttribute('pos', '0');
220
221        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
222        $objWriter->startElement('a:schemeClr');
223        $objWriter->writeAttribute('val', 'phClr');
224
225        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:tint
226        $objWriter->startElement('a:tint');
227        $objWriter->writeAttribute('val', '50000');
228        $objWriter->endElement();
229
230        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
231        $objWriter->startElement('a:satMod');
232        $objWriter->writeAttribute('val', '300000');
233        $objWriter->endElement();
234
235        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
236        $objWriter->endElement();
237
238        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/
239        $objWriter->endElement();
240
241        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs
242        $objWriter->startElement('a:gs');
243        $objWriter->writeAttribute('pos', '35000');
244
245        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
246        $objWriter->startElement('a:schemeClr');
247        $objWriter->writeAttribute('val', 'phClr');
248
249        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:tint
250        $objWriter->startElement('a:tint');
251        $objWriter->writeAttribute('val', '37000');
252        $objWriter->endElement();
253
254        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
255        $objWriter->startElement('a:satMod');
256        $objWriter->writeAttribute('val', '300000');
257        $objWriter->endElement();
258
259        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
260        $objWriter->endElement();
261
262        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/
263        $objWriter->endElement();
264
265        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs
266        $objWriter->startElement('a:gs');
267        $objWriter->writeAttribute('pos', '100000');
268
269        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
270        $objWriter->startElement('a:schemeClr');
271        $objWriter->writeAttribute('val', 'phClr');
272
273        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:tint
274        $objWriter->startElement('a:tint');
275        $objWriter->writeAttribute('val', '15000');
276        $objWriter->endElement();
277
278        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
279        $objWriter->startElement('a:satMod');
280        $objWriter->writeAttribute('val', '350000');
281        $objWriter->endElement();
282
283        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
284        $objWriter->endElement();
285
286        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/
287        $objWriter->endElement();
288
289        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/
290        $objWriter->endElement();
291
292        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:lin
293        $objWriter->startElement('a:lin');
294        $objWriter->writeAttribute('ang', 16200000);
295        $objWriter->writeAttribute('scaled', 1);
296        $objWriter->endElement();
297
298        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/
299        $objWriter->endElement();
300
301        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill
302        $objWriter->startElement('a:gradFill');
303        $objWriter->writeAttribute('rotWithShape', 1);
304
305        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst
306        $objWriter->startElement('a:gsLst');
307
308        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs
309        $objWriter->startElement('a:gs');
310        $objWriter->writeAttribute('pos', '0');
311
312        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
313        $objWriter->startElement('a:schemeClr');
314        $objWriter->writeAttribute('val', 'phClr');
315
316        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
317        $objWriter->startElement('a:shade');
318        $objWriter->writeAttribute('val', '51000');
319        $objWriter->endElement();
320
321        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
322        $objWriter->startElement('a:satMod');
323        $objWriter->writeAttribute('val', '130000');
324        $objWriter->endElement();
325
326        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
327        $objWriter->endElement();
328
329        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/
330        $objWriter->endElement();
331
332        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs
333        $objWriter->startElement('a:gs');
334        $objWriter->writeAttribute('pos', '80000');
335
336        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
337        $objWriter->startElement('a:schemeClr');
338        $objWriter->writeAttribute('val', 'phClr');
339
340        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
341        $objWriter->startElement('a:shade');
342        $objWriter->writeAttribute('val', '93000');
343        $objWriter->endElement();
344
345        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
346        $objWriter->startElement('a:satMod');
347        $objWriter->writeAttribute('val', '130000');
348        $objWriter->endElement();
349
350        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
351        $objWriter->endElement();
352
353        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/
354        $objWriter->endElement();
355
356        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs
357        $objWriter->startElement('a:gs');
358        $objWriter->writeAttribute('pos', '100000');
359
360        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
361        $objWriter->startElement('a:schemeClr');
362        $objWriter->writeAttribute('val', 'phClr');
363
364        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
365        $objWriter->startElement('a:shade');
366        $objWriter->writeAttribute('val', '94000');
367        $objWriter->endElement();
368
369        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
370        $objWriter->startElement('a:satMod');
371        $objWriter->writeAttribute('val', '135000');
372        $objWriter->endElement();
373
374        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
375        $objWriter->endElement();
376
377        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/
378        $objWriter->endElement();
379
380        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/
381        $objWriter->endElement();
382
383        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:lin
384        $objWriter->startElement('a:lin');
385        $objWriter->writeAttribute('ang', 16200000);
386        $objWriter->writeAttribute('scaled', 0);
387        $objWriter->endElement();
388
389        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/
390        $objWriter->endElement();
391
392        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/
393        $objWriter->endElement();
394
395        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst
396        $objWriter->startElement('a:lnStyleLst');
397
398        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln
399        $objWriter->startElement('a:ln');
400        $objWriter->writeAttribute('w', 9525);
401        $objWriter->writeAttribute('cap', 'flat');
402        $objWriter->writeAttribute('cmpd', 'sng');
403        $objWriter->writeAttribute('algn', 'ctr');
404
405        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill
406        $objWriter->startElement('a:solidFill');
407
408        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/a:schemeClr
409        $objWriter->startElement('a:schemeClr');
410        $objWriter->writeAttribute('val', 'phClr');
411
412        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
413        $objWriter->startElement('a:shade');
414        $objWriter->writeAttribute('val', '95000');
415        $objWriter->endElement();
416
417        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
418        $objWriter->startElement('a:satMod');
419        $objWriter->writeAttribute('val', '105000');
420        $objWriter->endElement();
421
422        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/a:schemeClr/
423        $objWriter->endElement();
424
425        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/
426        $objWriter->endElement();
427
428        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:prstDash
429        $objWriter->startElement('a:prstDash');
430        $objWriter->writeAttribute('val', 'solid');
431        $objWriter->endElement();
432
433        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/
434        $objWriter->endElement();
435
436        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln
437        $objWriter->startElement('a:ln');
438        $objWriter->writeAttribute('w', 25400);
439        $objWriter->writeAttribute('cap', 'flat');
440        $objWriter->writeAttribute('cmpd', 'sng');
441        $objWriter->writeAttribute('algn', 'ctr');
442
443        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill
444        $objWriter->startElement('a:solidFill');
445
446        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/a:schemeClr
447        $objWriter->startElement('a:schemeClr');
448        $objWriter->writeAttribute('val', 'phClr');
449
450        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/a:schemeClr/
451        $objWriter->endElement();
452
453        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/
454        $objWriter->endElement();
455
456        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:prstDash
457        $objWriter->startElement('a:prstDash');
458        $objWriter->writeAttribute('val', 'solid');
459        $objWriter->endElement();
460
461        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/
462        $objWriter->endElement();
463
464        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln
465        $objWriter->startElement('a:ln');
466        $objWriter->writeAttribute('w', 38100);
467        $objWriter->writeAttribute('cap', 'flat');
468        $objWriter->writeAttribute('cmpd', 'sng');
469        $objWriter->writeAttribute('algn', 'ctr');
470
471        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill
472        $objWriter->startElement('a:solidFill');
473
474        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/a:schemeClr
475        $objWriter->startElement('a:schemeClr');
476        $objWriter->writeAttribute('val', 'phClr');
477
478        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/a:schemeClr/
479        $objWriter->endElement();
480
481        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/
482        $objWriter->endElement();
483
484        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:prstDash
485        $objWriter->startElement('a:prstDash');
486        $objWriter->writeAttribute('val', 'solid');
487        $objWriter->endElement();
488
489        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/
490        $objWriter->endElement();
491
492        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/
493        $objWriter->endElement();
494
495        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst
496        $objWriter->startElement('a:effectStyleLst');
497
498        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle
499        $objWriter->startElement('a:effectStyle');
500
501        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst
502        $objWriter->startElement('a:effectLst');
503
504        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw
505        $objWriter->startElement('a:outerShdw');
506        $objWriter->writeAttribute('blurRad', 40000);
507        $objWriter->writeAttribute('dir', 5400000);
508        $objWriter->writeAttribute('dist', 20000);
509        $objWriter->writeAttribute('rotWithShape', 0);
510
511        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr
512        $objWriter->startElement('a:srgbClr');
513        $objWriter->writeAttribute('val', '000000');
514
515        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha
516        $objWriter->startElement('a:alpha');
517        $objWriter->writeAttribute('val', '38000');
518
519        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha/
520        $objWriter->endElement();
521
522        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/
523        $objWriter->endElement();
524
525        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/
526        $objWriter->endElement();
527
528        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/
529        $objWriter->endElement();
530
531        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/
532        $objWriter->endElement();
533
534        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle
535        $objWriter->startElement('a:effectStyle');
536
537        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst
538        $objWriter->startElement('a:effectLst');
539
540        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw
541        $objWriter->startElement('a:outerShdw');
542        $objWriter->writeAttribute('blurRad', 40000);
543        $objWriter->writeAttribute('dir', 5400000);
544        $objWriter->writeAttribute('dist', 23000);
545        $objWriter->writeAttribute('rotWithShape', 0);
546
547        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr
548        $objWriter->startElement('a:srgbClr');
549        $objWriter->writeAttribute('val', '000000');
550
551        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha
552        $objWriter->startElement('a:alpha');
553        $objWriter->writeAttribute('val', '35');
554
555        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha/
556        $objWriter->endElement();
557
558        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/
559        $objWriter->endElement();
560
561        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/
562        $objWriter->endElement();
563
564        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/
565        $objWriter->endElement();
566
567        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/
568        $objWriter->endElement();
569
570        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle
571        $objWriter->startElement('a:effectStyle');
572
573        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst
574        $objWriter->startElement('a:effectLst');
575
576        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw
577        $objWriter->startElement('a:outerShdw');
578        $objWriter->writeAttribute('blurRad', 40000);
579        $objWriter->writeAttribute('dir', 5400000);
580        $objWriter->writeAttribute('dist', 23000);
581        $objWriter->writeAttribute('rotWithShape', 0);
582
583        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr
584        $objWriter->startElement('a:srgbClr');
585        $objWriter->writeAttribute('val', '000000');
586
587        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha
588        $objWriter->startElement('a:alpha');
589        $objWriter->writeAttribute('val', '35000');
590
591        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha/
592        $objWriter->endElement();
593
594        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/
595        $objWriter->endElement();
596
597        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/
598        $objWriter->endElement();
599
600        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/
601        $objWriter->endElement();
602
603        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d
604        $objWriter->startElement('a:scene3d');
605
606        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d/a:camera
607        $objWriter->startElement('a:camera');
608        $objWriter->writeAttribute('prst', 'orthographicFront');
609
610        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d/a:camera/a:rot
611        $objWriter->startElement('a:rot');
612        $objWriter->writeAttribute('lat', 0);
613        $objWriter->writeAttribute('lon', 0);
614        $objWriter->writeAttribute('rev', 0);
615        $objWriter->endElement();
616
617        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d/a:camera/
618        $objWriter->endElement();
619
620        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d/a:lightRig
621        $objWriter->startElement('a:lightRig');
622        $objWriter->writeAttribute('dir', 't');
623        $objWriter->writeAttribute('rig', 'threePt');
624
625        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d/a:lightRig/a:rot
626        $objWriter->startElement('a:rot');
627        $objWriter->writeAttribute('lat', 0);
628        $objWriter->writeAttribute('lon', 0);
629        $objWriter->writeAttribute('rev', 1200000);
630        $objWriter->endElement();
631
632        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d/a:lightRig/
633        $objWriter->endElement();
634
635        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d/
636        $objWriter->endElement();
637
638        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:sp3d
639        $objWriter->startElement('a:sp3d');
640
641        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:sp3d/a:bevelT
642        $objWriter->startElement('a:bevelT');
643        $objWriter->writeAttribute('h', 25400);
644        $objWriter->writeAttribute('w', 63500);
645        $objWriter->endElement();
646
647        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:sp3d/
648        $objWriter->endElement();
649
650        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/
651        $objWriter->endElement();
652
653        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/
654        $objWriter->endElement();
655
656        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst
657        $objWriter->startElement('a:bgFillStyleLst');
658
659        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:solidFill
660        $objWriter->startElement('a:solidFill');
661
662        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:solidFill/a:schemeClr
663        $objWriter->startElement('a:schemeClr');
664        $objWriter->writeAttribute('val', 'phClr');
665
666        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:solidFill/a:schemeClr/
667        $objWriter->endElement();
668
669        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:solidFill/
670        $objWriter->endElement();
671
672        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill
673        $objWriter->startElement('a:gradFill');
674        $objWriter->writeAttribute('rotWithShape', 1);
675
676        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst
677        $objWriter->startElement('a:gsLst');
678
679        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs
680        $objWriter->startElement('a:gs');
681        $objWriter->writeAttribute('pos', '0');
682
683        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
684        $objWriter->startElement('a:schemeClr');
685        $objWriter->writeAttribute('val', 'phClr');
686
687        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:tint
688        $objWriter->startElement('a:tint');
689        $objWriter->writeAttribute('val', '40000');
690        $objWriter->endElement();
691
692        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
693        $objWriter->startElement('a:satMod');
694        $objWriter->writeAttribute('val', '350000');
695        $objWriter->endElement();
696
697        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
698        $objWriter->endElement();
699
700        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/
701        $objWriter->endElement();
702
703        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs
704        $objWriter->startElement('a:gs');
705        $objWriter->writeAttribute('pos', '40000');
706
707        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
708        $objWriter->startElement('a:schemeClr');
709        $objWriter->writeAttribute('val', 'phClr');
710
711        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
712        $objWriter->startElement('a:tint');
713        $objWriter->writeAttribute('val', '45000');
714        $objWriter->endElement();
715
716        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
717        $objWriter->startElement('a:shade');
718        $objWriter->writeAttribute('val', '99000');
719        $objWriter->endElement();
720
721        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
722        $objWriter->startElement('a:satMod');
723        $objWriter->writeAttribute('val', '350000');
724        $objWriter->endElement();
725
726        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
727        $objWriter->endElement();
728
729        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/
730        $objWriter->endElement();
731
732        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs
733        $objWriter->startElement('a:gs');
734        $objWriter->writeAttribute('pos', '100000');
735
736        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
737        $objWriter->startElement('a:schemeClr');
738        $objWriter->writeAttribute('val', 'phClr');
739
740        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
741        $objWriter->startElement('a:shade');
742        $objWriter->writeAttribute('val', '20000');
743        $objWriter->endElement();
744
745        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
746        $objWriter->startElement('a:satMod');
747        $objWriter->writeAttribute('val', '255000');
748        $objWriter->endElement();
749
750        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
751        $objWriter->endElement();
752
753        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/
754        $objWriter->endElement();
755
756        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/
757        $objWriter->endElement();
758
759        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:path
760        $objWriter->startElement('a:path');
761        $objWriter->writeAttribute('path', 'circle');
762
763        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:path/a:fillToRect
764        $objWriter->startElement('a:fillToRect');
765        $objWriter->writeAttribute('b', '180000');
766        $objWriter->writeAttribute('l', '50000');
767        $objWriter->writeAttribute('r', '50000');
768        $objWriter->writeAttribute('t', '-80000');
769        $objWriter->endElement();
770
771        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:path/
772        $objWriter->endElement();
773
774        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/
775        $objWriter->endElement();
776
777        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill
778        $objWriter->startElement('a:gradFill');
779        $objWriter->writeAttribute('rotWithShape', 1);
780
781        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst
782        $objWriter->startElement('a:gsLst');
783
784        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs
785        $objWriter->startElement('a:gs');
786        $objWriter->writeAttribute('pos', '0');
787
788        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
789        $objWriter->startElement('a:schemeClr');
790        $objWriter->writeAttribute('val', 'phClr');
791
792        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:tint
793        $objWriter->startElement('a:tint');
794        $objWriter->writeAttribute('val', '80000');
795        $objWriter->endElement();
796
797        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
798        $objWriter->startElement('a:satMod');
799        $objWriter->writeAttribute('val', '300000');
800        $objWriter->endElement();
801
802        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
803        $objWriter->endElement();
804
805        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/
806        $objWriter->endElement();
807
808        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs
809        $objWriter->startElement('a:gs');
810        $objWriter->writeAttribute('pos', '100000');
811
812        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
813        $objWriter->startElement('a:schemeClr');
814        $objWriter->writeAttribute('val', 'phClr');
815
816        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
817        $objWriter->startElement('a:shade');
818        $objWriter->writeAttribute('val', '30000');
819        $objWriter->endElement();
820
821        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
822        $objWriter->startElement('a:satMod');
823        $objWriter->writeAttribute('val', '200000');
824        $objWriter->endElement();
825
826        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
827        $objWriter->endElement();
828
829        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/
830        $objWriter->endElement();
831
832        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/
833        $objWriter->endElement();
834
835        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:path
836        $objWriter->startElement('a:path');
837        $objWriter->writeAttribute('path', 'circle');
838
839        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:path/a:fillToRect
840        $objWriter->startElement('a:fillToRect');
841        $objWriter->writeAttribute('b', '50000');
842        $objWriter->writeAttribute('l', '50000');
843        $objWriter->writeAttribute('r', '50000');
844        $objWriter->writeAttribute('t', '50000');
845        $objWriter->endElement();
846
847        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:path/
848        $objWriter->endElement();
849
850        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/
851        $objWriter->endElement();
852
853        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/
854        $objWriter->endElement();
855
856        // a:theme/a:themeElements/a:fmtScheme/
857        $objWriter->endElement();
858
859        // a:theme/a:themeElements/
860        $objWriter->endElement();
861
862        // a:theme/a:themeElements
863        $objWriter->writeElement('a:objectDefaults');
864
865        // a:theme/a:extraClrSchemeLst
866        $objWriter->writeElement('a:extraClrSchemeLst');
867
868        // a:theme/
869        $objWriter->endElement();
870
871        // Return
872        return $objWriter->getData();
873    }
874}